package com.lxl.todo;


//TODO 需要复习
/**
 * 接雨水
 * 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。
 * 输入：height = [0,1,0,2,1,0,1,3,2,1,2,1]
 * 输出：6
 * 解释：上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图，在这种情况下，可以接 6 个单位的雨水（蓝色部分表示雨水）。
 */
public class Solution6 {
    public int trap(int[] height) {
        int left = 0; int right = height.length - 1; int res = 0;
        int maxL = height[left]; int maxR = height[right];
        while (left <= right) {
            maxL = Math.max(maxL, height[left]);
            maxR = Math.max(maxR, height[right]);
            if (maxL < maxR) {
                res += (maxL - height[left]);
                left++;
            } else {
                res += (maxR - height[right]);
                --right;
            }
        }
        return res;
    }

    public static void main(String[] args) {
        int[] nums = {0,1,0,2,1,0,1,3,2,1,2,1};
        Solution6 solution = new Solution6();
        int trap = solution.trap(nums);
        System.out.println("trap = " + trap);

    }
        
}
